<?php
require_once 'Listagem.php';
require_once 'Objeto.php';
class ListagemPorOrigem implements Listagem {

    public function listar(array &$dados, &$pagina, &$numRegistrosPorPagina) {
        $consulta_from = "";
        $consulta_where = "where ";
        $dadosFiltros = array();
        if (isset($dados['nome'])) {
            $dadosFiltros[] = $dados['nome'];
            $consulta_where = $consulta_where.'o.nome = ? and ';
        }
        if (isset($dados['pais'])) {
            $dadosFiltros[] = $dados['pais'];
            $consulta_from = $consulta_from . ", origem ori ";
            $consulta_where = $consulta_where.'ori.cod_origem = o.cod_origem and '.
                'ori.or_pais = ? and ';
        }
        if (isset($dados['estado'])) {
            $dadosFiltros[] = $dados['estado'];
            if (strpos($consulta_from, ", origem ori ") == 0) {
                $consulta_from = $consulta_from . ", origem ori ";
            }
            $consulta_where = $consulta_where.'ori.cod_origem = o.cod_origem and '.
                'ori.or_estado = ? and ';
        }
        if (isset($dados['cidade'])) {
            $dadosFiltros[] = $dados['cidade'];
            if (strpos($consulta_from, ", origem ori ") == 0) {
                $consulta_from = $consulta_from . ", origem ori ";
            }
            $consulta_where = $consulta_where.'ori.cod_origem = o.cod_origem and '.
                'ori.or_cidade = ? and ';
        }
        if (isset($dados['anoinicial'])) {
            $dadosFiltros[] = $dados['anoinicial'];
            $consulta_from = $consulta_from . ", epoca epo ";
            $consulta_where = $consulta_where.'epo.cod_epoca = o.cod_epoca and '.
                'epo.ano >= ? and ';
        }
        if (isset($dados['anofinal'])) {
            $dadosFiltros[] = $dados['anofinal'];
            if (strpos($consulta_from, ", epoca epo ") == 0) {
                $consulta_from = $consulta_from . ", epoca epo ";
            }
            $consulta_where = $consulta_where.'epo.cod_epoca = o.cod_epoca and '.
                'epo.ano <= ? and ';
        }
        if ($consulta_where == "where ") {
            return 'Selecione ao menos uma opção para consulta';
        }
        $query = $consulta_from.$consulta_where;
        $query = substr_replace($query, "" , strlen($query) - 4)." limit ".$numRegistrosPorPagina." offset ".($numRegistrosPorPagina*$pagina);
        return Objeto::listar($query, $dadosFiltros);
    }
}
?>
